
const path = require('path')
const webpack = require('webpack')
const CompressionPlugin = require('compression-webpack-plugin')
const proxy = require('./src/proxy/index.js')
const IS_BUILD = process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'sit'
const projectTitle = 'vue2-ts-pc-template'

const resolve = dir => {
  return path.join(__dirname, dir)
}

module.exports = {
  devServer: {
    host: '0.0.0.0', // 允许ip访问
    port: 8081,
    ...proxy
  },
  filenameHashing:true,
  publicPath: process.env.NODE_ENV !== 'production' ? '/' : './', // 基本路径 如果你的应用被部署在 https://www.my-app.com/my-app/，则设置 publicPath 为 /my-app/
  outputDir: 'dist', // 输出文件目录
  assetsDir: 'assets', // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
  lintOnSave: process.env.NODE_ENV !== 'production', // eslint-loader 是否在保存的时候检查
  productionSourceMap: process.env.NODE_ENV !== 'production', // 生产环境是否生成 sourceMap 文件
  // css相关配置
  css: {
    // extract: true, // 是否使用css分离插件 ExtractTextPlugin Default: 生产环境下是 true，开发环境下是 false
    // sourceMap: false, // 开启 CSS source maps? default  false
    loaderOptions: {
      sass: {
        prependData: '@import "~@/styles/index.scss"; '
      }
    },
    requireModuleExtension: true  // 启用 CSS modules for all css / pre-processor files.
  },
  chainWebpack: config => {
    // moment忽略其他语言包
    config
      .plugin('ignore')
      .use(new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /zh-cn$/))
    // 配置路径别名
    config.resolve.alias
      .set('@', resolve('src'))
      .set('static', resolve('public/static')) // e.g. 'static/doc/authorisedfileno.pdf'
      .set('@comp', resolve('src/components'))
      .set('@view', resolve('src/views'))
      .set('@style', resolve('src/style'))
      .set('@assets', resolve('src/assets'))
      .set('@store', resolve('src/store'))
      .set('@router', resolve('src/router'))
      .set('@util', resolve('src/utils'))
  },
  configureWebpack: config => {
    config.name = projectTitle
    // 生产包gzip 压缩
    if (IS_BUILD) {
      config.plugins.push(
        new CompressionPlugin({
          filename: '[path].gz[query]',
          test: /\.js$|\.html$|\.css/,
          threshold: 10240,
          deleteOriginalAssets: false
        })
      )
    }
    if (process.env.VUE_APP_NODE_ENV !== 'production') {
      config.devtool = '#cheap-module-source-map'
    }
    // 生产环境去掉console
    if (process.env.VUE_APP_NODE_ENV === 'production') {
      config.optimization.minimizer.map((arg) => {
        const option = arg.options.terserOptions.compress
        option.drop_console = true // 打开开关
        return arg
      })
    }
  },
  // 第三方插件配置
  pluginOptions: {
  },

  
}
